package com.reeygu.item.utils;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;

@Component
public class MD5Util {
    //后端盐
    private static final String SALT = "osr83jdw43t9w2cb8450";

    public static String md5(String pass) {
        return DigestUtils.md5Hex(pass);
    }

    /**
     * 模拟前端加密， 密码不少于6位，不担心长度溢出
     * @param pass 前端传递密码第一次加密
     */
    public static String getPassFromFrontPass(String pass) {
        String updatePass = ""
                + SALT.charAt(0)
                + SALT.charAt(2)
                + pass
                + SALT.charAt(5)
                + SALT.charAt(4);
        return md5(updatePass);
    }

    /**
     * 根据数据库盐加密
     * @param pass 前端传递密码第一次加密
     * @param salt 长度为8
     */
    public static String getPassFromUpdatePass(String pass, String salt) {
        int len = pass.length();
        String updatePass = salt.substring(3,6)
                + pass.substring(0, len / 3)
                + salt.substring(5,8)
                + pass.substring(len / 3, len / 2)
                + salt.charAt(1)
                + pass.substring(len / 2, len)
                + salt.substring(1,3);
        return md5(updatePass);
    }

    public static void main(String[] args) {
        String updatePass = getPassFromFrontPass("881911");
        System.out.println(updatePass);
        String res = getPassFromUpdatePass(updatePass, "iw83d9q1");
        System.out.println(res);
    }

}
